@@ -1,5 +1,8 @@ |
||
| 1 | 1 |
# -*- coding: utf-8 -*- |
| 2 | 2 |
|
| 3 |
+import base64 |
|
| 4 |
+ |
|
| 5 |
+import requests |
|
| 3 | 6 |
from django_logit import logit |
| 4 | 7 |
from django_response import response |
| 5 | 8 |
from TimeConvert import TimeConvert as tc |
@@ -62,15 +65,41 @@ def get_contribtion_contract_api(request): |
||
| 62 | 65 |
}) |
| 63 | 66 |
|
| 64 | 67 |
|
| 68 |
+def generate_file_from_qiniu(file_url): |
|
| 69 |
+ try: |
|
| 70 |
+ data = requests.get(file_url).content |
|
| 71 |
+ data = base64.b64encode(data).decode('utf-8')
|
|
| 72 |
+ except Exception: |
|
| 73 |
+ data = None |
|
| 74 |
+ return data |
|
| 75 |
+ |
|
| 76 |
+ |
|
| 77 |
+def generate_files_from_qiniu(file_urls): |
|
| 78 |
+ files = [] |
|
| 79 |
+ for file_url in file_urls: |
|
| 80 |
+ file_b64str = generate_file_from_qiniu(file_url) |
|
| 81 |
+ if not file_b64str: |
|
| 82 |
+ continue |
|
| 83 |
+ files.append({
|
|
| 84 |
+ 'FileBody': file_b64str, |
|
| 85 |
+ 'FileName': file_url.split('/')[-1]
|
|
| 86 |
+ }) |
|
| 87 |
+ return files |
|
| 88 |
+ |
|
| 89 |
+ |
|
| 65 | 90 |
def upload_contribution_images(contribution_id): |
| 66 | 91 |
# 上传MemberActivityContributionInfo图片 https://qian.tencent.com/developers/companyApis/templatesAndFiles/UploadFiles |
| 67 | 92 |
|
| 68 | 93 |
contribtuon = MemberActivityContributionInfo.objects.get(contribution_id=contribution_id) |
| 69 | 94 |
|
| 70 | 95 |
# TODO: 从 MemberActivityContributionInfo 生成 files 对象 |
| 71 |
- file_names = [image['image_url'].split('/')[-1] for image in contribtuon.images]
|
|
| 96 |
+ file_urls = [image['image_url'] for image in contribtuon.images] |
|
| 97 |
+ file_names = [file_url.split('/')[-1] for file_url in file_urls]
|
|
| 72 | 98 |
file_type = file_names[0].split('.')[-1]
|
| 73 | 99 |
files = get_images_data(file_names) |
| 100 |
+ # Redis 已无缓存的数据 |
|
| 101 |
+ if len(files) != len(file_names): |
|
| 102 |
+ files = generate_files_from_qiniu(file_urls) |
|
| 74 | 103 |
# files = [ |
| 75 | 104 |
# {
|
| 76 | 105 |
# "FileBody": "文件base64编码,不含逗号前字符,即data:image/png;base64,", |
@@ -21,4 +21,4 @@ def get_images_data(file_names): |
||
| 21 | 21 |
return [{
|
| 22 | 22 |
'FileBody': v, |
| 23 | 23 |
'FileName': k |
| 24 |
- } for k, v in zip(file_names, file_b64strs)] |
|
| 24 |
+ } for k, v in zip(file_names, file_b64strs) if v] |